_require local "../../../../basis.smi"
_require "../../../data/symbols/main/Symbol.smi"
_require "../../../data/symbols/main/Loc.smi"
_require local "../../../data/symbols/main/RecordLabel.smi"
_require local "../../../extensions/debug/main/Bug.smi"

_require local "../../../extensions/usererror/main/UserErrorUtils.smi"
_require local "./ElaborateError.ppg.smi"
_require local "./ElaborateErrorSQL.ppg.smi"

_require "../../../data/symbols/main/Loc.smi"
_require "../../../compilerIRs/absyn/main/Absyn.smi"
_require "../../../compilerIRs/absyn/main/AbsynSQL.smi"
_require "../../../compilerIRs/absyn/main/Fixity.smi"
_require "../../../compilerIRs/patterncalc/main/PatternCalc.ppg.smi"

structure ElaborateSQL =
  struct
     val elaborateExp
         : {elabExp : Absyn.exp -> PatternCalc.plexp,
            elabPat : Absyn.pat -> PatternCalc.plpat}
           -> (Fixity.fixity * Loc.loc) SymbolEnv.map
           -> (Absyn.exp, Absyn.pat, Absyn.ty) AbsynSQL.sqlexp * Loc.loc
           -> PatternCalc.plexp
  end
